package com.mh.service;

import com.mh.dto.R;
import com.mh.dto.vo.UseCouponRecordVo;
import com.mh.pojo.CouponInfos;
import com.mh.pojo.UserInfos;

import java.util.List;

/**
 * 优惠券服务类接口
 */

public interface CouponService {

    /**
     * 创建优惠券
     * @param couponInfos 优惠券信息
     * @return ·
     */
    R<String> createCoupon(CouponInfos couponInfos);

    /**
     * 获取商家所有优惠券信息
     * @param storeId 商家id
     * @return ·
     */
    R<List<CouponInfos>> getCouponInfosByStoreId(String storeId);

    /**
     * 用户领取优惠券
     * @param userId 用户ID
     * @param couponId 优惠券ID
     * @return ·
     */
    R<String> userGetCoupon(String userId, String couponId);

    /**
     * 获取用户所有优惠券信息
     * @param userId 用户ID
     * @return ·
     */
    R<List<CouponInfos>> getCouponInfosByUserId(String userId);

    /**
     * 获取下单商品时用户可用优惠券信息
     * @param userId 用户ID
     * @param goodsId 商品ID
     * @return ·
     */
    R<List<CouponInfos>> getUseAbleCouponInfosByUserId(String userId,  String goodsId);

    /**
     * 用户使用优惠券
     * @param userId 用户ID
     * @param couponId 优惠券ID
     * @return ·
     */
    R<String> useCoupon(String userId, String couponId);

    /**
     * 获取用户使用优惠券记录
     * @param userId 用户ID
     * @return ·
     */
    R<List<UseCouponRecordVo>> getUseCouponRecordByUserId(String userId);

    /**
     * 检查用户是否已领取该优惠券
     * @param userId 用户ID
     * @param couponId 优惠券ID
     * @return ·
     */
    R<Boolean> checkIsGetByUserIdAndCouponId(String userId, String couponId);
}
